import axios from 'axios/index'
import {SERVICE_ADDR} from '../config/configConstant.js'
import AES from '../common/AES.js'

axios.defaults.timeout = 10000 // 响应时间
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8' // 配置请求头
axios.defaults.baseURL = SERVICE_ADDR // 配置接口地址

// POST传参序列化(添加请求拦截器)
axios.interceptors.request.use((config) => {
  // 在发送请求之前做某件事
  if (config.method === 'post') {
    // config.data = qs.stringify(config.data)
    let dataInfo = JSON.stringify(config.data)
    dataInfo = AES.encrypt(dataInfo)
    config.data = dataInfo
  }
  return config
}, (error) => {
  console.log('http api 错误的传参')
  return Promise.reject(error)
})

// 返回状态判断(添加响应拦截器)
axios.interceptors.response.use((res) => {
  let result = ""
  let info = AES.decrypt(res.data)
  try {
    result = JSON.parse(info)
  } catch (e) {
    result = info
  }
  return result
}, (error) => {
  console.log('http api 网络异常')
  return Promise.reject(error)
})

// 返回一个Promise(发送post请求)
export function fetchPost (url, params) {
  return new Promise((resolve, reject) => {
    axios.post(url, params)
      .then(response => {
        resolve(response)
      }, err => {
        reject(err)
      })
      .catch((error) => {
        reject(error)
      })
  })
}
// 返回一个Promise(发送get请求)
export function fetchGet (url, param) {
  return new Promise((resolve, reject) => {
    axios.get(url, {params: param})
      .then(response => {
        resolve(response)
      }, err => {
        reject(err)
      })
      .catch((error) => {
        reject(error)
      })
  })
}
export default {
  fetchPost,
  fetchGet
}
